package lc.weekly;

/**
 * 第 288 场周赛
 * <p>
 * 本场竞赛由「Airwallex 空中云汇 & 力扣」联合主办
 * <p>
 * https://leetcode-cn.com/contest/weekly-contest-288
 */
public interface WeeklyContest288 {

    /**
     * 6037. 按奇偶性交换后的最大数字
     * <p>
     * <p>
     * 给你一个正整数 num 。你可以交换 num 中 奇偶性 相同的任意两位数字（即，都是奇数或者偶数）。
     * <p>
     * 返回交换 任意 次之后 num 的 最大 可能值。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= num <= 109</li>
     * </ul>
     *
     * @param num
     * @return
     */
    int largestInteger(int num);

    /**
     * 6038. 向表达式添加括号后的最小结果
     * <p>
     * <p>
     * 给你一个下标从 0 开始的字符串 expression ，格式为 "<num1>+<num2>" ，其中 <num1> 和 <num2> 表示正整数。
     * <p>
     * 请你向 expression 中添加一对括号，使得在添加之后， expression 仍然是一个有效的数学表达式，并且计算后可以得到 最小 可能值。左括号 必须 添加在 '+' 的左侧，而右括号必须添加在 '+' 的右侧。
     * <p>
     * 返回添加一对括号后形成的表达式 expression ，且满足 expression 计算得到 最小 可能值。如果存在多个答案都能产生相同结果，返回任意一个答案。
     * <p>
     * 生成的输入满足：expression 的原始值和添加满足要求的任一对括号之后 expression 的值，都符合 32-bit 带符号整数范围。
     * <p>
     * <p>
     * 提示：
     * <ul>
     *     <li>3 <= expression.length <= 10</li>
     *     <li>expression 仅由数字 '1' 到 '9' 和 '+' 组成</li>
     *     <li>expression 由数字开始和结束</li>
     *     <li>expression 恰好仅含有一个 '+'.</li>
     *     <li>expression 的原始值和添加满足要求的任一对括号之后 expression 的值，都符合 32-bit 带符号整数范围</li>
     * </ul>
     *
     * @param expression
     * @return
     */
    String minimizeResult(String expression);

    /**
     * 6039. K 次增加后的最大乘积
     * <p>
     * <p>
     * 给你一个非负整数数组 nums 和一个整数 k 。每次操作，你可以选择 nums 中 任一 元素并将它 增加 1 。
     * <p>
     * 请你返回 至多 k 次操作后，能得到的 nums的 最大乘积 。由于答案可能很大，请你将答案对 10<sup>9</sup> + 7 取余后返回。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= nums.length, k <= 10<sup>5</sup></li>
     *     <li>0 <= nums[i] <= 10<sup>6</sup></li>
     * </ul>
     *
     * @param nums
     * @param k
     * @return
     */
    int maximumProduct(int[] nums, int k);

    /**
     * 6040. 花园的最大总美丽值
     * <p>
     * <p>
     * Alice 是 n 个花园的园丁，她想通过种花，最大化她所有花园的总美丽值。
     * <p>
     * 给你一个下标从 0 开始大小为 n 的整数数组 flowers ，其中 flowers[i] 是第 i 个花园里已经种的花的数目。已经种了的花 不能 移走。同时给你 newFlowers ，表示 Alice 额外可以种花的 最大数目 。同时给你的还有整数 target ，full 和 partial 。
     * <p>
     * 如果一个花园有 至少 target 朵花，那么这个花园称为 完善的 ，花园的 总美丽值 为以下分数之 和 ：
     * <ol>
     *     <li>完善 花园数目乘以 full.</li>
     *     <li>剩余 不完善 花园里，花的 最少数目 乘以 partial 。如果没有不完善花园，那么这一部分的值为 0 。</li>
     * </ol>
     * <p>
     * 请你返回 Alice 种最多 newFlowers 朵花以后，能得到的 最大 总美丽值。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= flowers.length <= 10<sup>5</sup></li>
     *     <li>1 <= flowers[i], target <= 10<sup>5</sup></li>
     *     <li>1 <= newFlowers <= 10<sup>10</sup></li>
     *     <li>1 <= full, partial <= 10<sup>5</sup></li>
     * </ul>
     *
     * @param flowers
     * @param newFlowers
     * @param target
     * @param full
     * @param partial
     * @return
     */
    long maximumBeauty(int[] flowers, long newFlowers, int target, int full, int partial);
}
